package cn.jly.bigdata.spark.sql

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}

/**
 * @author lanyangji
 * @date 2019/11/29 20:57
 */
object SparkSql01_DataFrame {

  def main(args: Array[String]): Unit = {

    // 创建sparkConf并设置app的名称
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkSql01_DataFrame")

    // 创建SparkSession并设置app的名称
    val spark: SparkSession = SparkSession
      .builder()
      .config(sparkConf)
      .getOrCreate()


    // 导入隐式转换，将RDD转换为DF或DS
    // sparkSession为SparkSession对象的名称
    import spark.implicits._

    // 读取数据，构建DataFrame
    val df: DataFrame = spark.read.json("input/people.json")

    df.show()

    df.filter($"age" > 21).show()

    // 采用 sql的语法来访问数据
    df.createOrReplaceTempView("persons")
    spark.sql("select * from persons where age > 21").show()

    spark.close()
  }
}
